import control  # pip install control
import matplotlib.pyplot as plt
import math
import numpy as np

# 创建时间向量
t = np.linspace(0, 10, 1000)
# 单位阶跃输入 u(t): 对于所有 t >= 0, u(t) = 1
u = np.ones_like(t)
alpha = 1.1
Kp = 2  # 比例系数
Ti = 0.5  # 积分时间常数
Td = 1  # 系数
sys = control.tf([alpha * Kp * Ti * Td + Ti * Td, Kp * Ti + alpha * Td, 1], [alpha * Ti * Td, Ti, 0])  # 系统
# 计算阶跃响应
T, yout = control.forced_response(sys, T=t, U=u)
# 绘制结果
plt.figure()
plt.title("Simulation")  # 设置图表标题
plt.plot(T, yout, label="System Response Kp=%.1f Ti=%.1f Td=%.1f alpha=%.1f" % (Kp, Ti, Td, alpha))  # 绘制系统响应
# 绘制输入的阶跃信号
plt.plot(T, u, label="Step Input", linestyle="--")  # 阶跃输入信号，使用虚线表示
plt.xlabel("Time(s)")
plt.ylabel("Output")
plt.legend(loc="best")  # 图例位置
plt.grid(True)
plt.show()
